import { IContext, IParam } from '@/core/interface/common';

/**
 * 面板成员控制器基类接口
 *
 * @export
 * @interface IPanelDetailController
 */
export interface IPanelDetailController {
	/**
	 * 成员名称
	 *
	 * @type {string}
	 * @memberof IPanelDetailController
	 */
	name: string;

	/**
	 * 成员标题
	 *
	 * @type {string}
	 * @memberof IPanelDetailController
	 */
	caption: string;

	/**
	 * 成员类型
	 *
	 * @type {string}
	 * @memberof IPanelDetailController
	 */
	itemType: string;

	/**
	 * 成员样式
	 *
	 * @type {string}
	 * @memberof IPanelDetailController
	 */
	itemStyle: string;

	/**
	 * 成员是否显示
	 *
	 * @type {boolean}
	 * @memberof IPanelDetailController
	 */
	visible: boolean;

	/**
	 * 是否显示标题
	 *
	 * @type {boolean}
	 * @memberof IPanelDetailController
	 */
	isShowCaption: boolean;

	/**
	 * 界面样式表
	 *
	 * @type {string}
	 * @memberof IPanelDetailController
	 */
	sysCss: string;

	/**
	 * 图标
	 *
	 * @type {IParam}
	 * @memberof IPanelDetailController
	 */
	sysImage: IParam;

	/**
	 * 获取模型数据
	 *
	 * @template T
	 * @return {*}  {T}
	 * @memberof IPanelDetailController
	 */
	getModel<T>(): T;

	/**
	 * 设置数据
	 *
	 * @param {*} value
	 * @memberof IPanelDetailController
	 */
	setData(value: any): void;

	/**
	 * 获取数据
	 *
	 * @memberof IPanelDetailController
	 */
	getData(): void;

	/**
	 * 设置当前下标
	 *
	 * @param {number} index
	 * @memberof IPanelDetailController
	 */
	setIndex(index: number): void;

	/**
	 * 获取当前下标
	 *
	 * @memberof IPanelDetailController
	 */
	getIndex(): void;

	/**
	 * 获取元素样式（除容器之外的元素，包含内容盒子 大小/边距/内容 的样式）
	 *
	 * @memberof IPanelDetailController
	 */
	getElementStyle(): void;

	/**
	 * 加载
	 *
	 * @param {IContext} context
	 * @param {IParam} viewParams
	 * @return {*}  {Promise<void>}
	 * @memberof IPanelDetailController
	 */
	load(context: IContext, viewParams: IParam): Promise<void>;
}
